<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>キャッシュのグループ</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Smarty マニュアル">
<link rel="up" href="caching.html" title="Chapter 14. キャッシュ">
<link rel="prev" href="caching.multiple.caches.html" title="ページごとに複数のキャッシュ">
<link rel="next" href="caching.cacheable.html" title="キャッシュ可能なプラグインの出力の制御">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">キャッシュのグループ</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="caching.multiple.caches.html">Prev</a> </td>
<th width="60%" align="center">Chapter 14. キャッシュ</th>
<td width="20%" align="right"> <a accesskey="n" href="caching.cacheable.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" title="キャッシュのグループ">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="caching.groups"></a>キャッシュのグループ</h2></div></div></div>
<p>
      <em class="parameter"><code>$cache_id</code></em> のグループを設定する事で、
      より複雑なグループにする事が出来ます。これは <em class="parameter"><code>$cache_id</code></em>
      の値の中の <code class="literal">|</code> によって各サブグループに分けられる事で実現できます。
      サブグループはいくらでも持つ事が出来ます。
     </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>
      ディレクトリ階層のようなキャッシュグループを考える事が出来ます。
      例えば <code class="literal">'a|b|c'</code> というキャッシュグループは、
      <code class="literal">'/a/b/c/'</code> というディレクトリ構造だと考えられます。
      </p></li>
<li class="listitem"><p>
      <code class="literal">clear_cache(null,'a|b|c')</code>
      はファイル <code class="literal">'/a/b/c/*'</code> を、
      <code class="literal">clear_cache(null,'a|b')</code> はファイル
      <code class="literal">'/a/b/*'</code> を削除するのに似ています。
      </p></li>
<li class="listitem"><p>
      <a class="link" href="variable.compile.id.html" title="$compile_id"><em class="parameter"><code>$compile_id</code></em></a>
      を <code class="literal">clear_cache(null,'a|b','foo')</code> のように指定すると、
      それをキャッシュグループに追加して
      <code class="literal">'/a/b/c/foo/'</code> として扱います。
      </p></li>
<li class="listitem"><p>
      テンプレート名を
      <code class="literal">clear_cache('foo.tpl','a|b|c')</code> のように指定すると、
      Smarty は <code class="literal">'/a/b/c/foo.tpl'</code> を削除しようと試みます。
      </p></li>
<li class="listitem"><p>
      また、<code class="literal">'/a/b/*/foo.tpl'</code> のように、
      複数のキャッシュグループの下でテンプレート名を指定して削除する事は出来ません。
      キャッシュグループは左から右へ向かう順序でのみグループ化を定義できます。
      グループとしてそれらをクリアするためには、
      単一のキャッシュグループ階層の下でテンプレートをグループ化する必要があります。
     </p></li>
</ul></div>
<p>
      キャッシュのグループ化はテンプレートディレクトリ階層によって混乱させられるべきではなく、
      テンプレートがどのような構造なのかも知り得ません。例えば、
      <code class="filename">themes/blue/index.tpl</code> のようなテンプレート構造があり、
      <span class="quote">“<span class="quote">blue</span>”</span> テーマのキャッシュファイルを全てクリアしたい時、
      テンプレートファイル構造をまねた 
      <code class="literal">display('themes/blue/index.tpl','themes|blue')</code>
      のような キャッシュグループ構造を作成する必要があり、それならば
      <code class="literal">clear_cache(null,'themes|blue')</code>
      によってキャッシュをクリアする事が出来ます。
     </p>
<div class="example">
<a name="id2852669"></a><p class="title"><b>Example 14.9. $cache_id groups</b></p>
<div class="example-contents"><pre class="programlisting">

&lt;?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty-&gt;caching = true;

// はじめの２つのcache_idグループが"sports|basketball"のキャッシュを全てクリアします。
$smarty-&gt;clear_cache(null,'sports|basketball');

// はじめのcache_idグループが"sports"のキャッシュを全てクリアします。
// これは"sports|basketball"又は"sports|(anything)|(anything)|(anything)|..."を用いてインクルードされたものでしょう。
$smarty-&gt;clear_cache(null,'sports');

// cache_id として"sports|basketball"を用いてfoo.tpl のキャッシュファイルをクリアします。
$smarty-&gt;clear_cache('foo.tpl','sports|basketball');


$smarty-&gt;display('index.tpl','sports|basketball');
?&gt;

      </pre></div>
</div>
<br class="example-break">
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="caching.multiple.caches.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="caching.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="caching.cacheable.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">ページごとに複数のキャッシュ </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> キャッシュ可能なプラグインの出力の制御</td>
</tr>
</table>
</div>
</body>
</html>
